/*

* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Smart-Shop开源商城系统/ Java商城-首选电商平台系统 请务必保留此注释头信息
* |     开源地址: https://gitee.com/ningbo-qishan/gruul-mall
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     可正常分享和学习源码,未经授权 不可商用！
* |     商业版中台购买/开源版商业授权 联系技术客服
* |     官网:  https://www.73app.cn/
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Copyright (c) 2016-2999 宁波启山智软科技有限公司
* |     版权所有 ,侵权必究！
* ------------------------------------------------------------------------

*/
package com.medusa.gruul.discount.service.manager;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.medusa.gruul.discount.api.entity.Coupon;
import com.baomidou.mybatisplus.extension.service.IService;
import com.medusa.gruul.discount.api.model.dto.manager.CouponDto;
import com.medusa.gruul.discount.api.model.param.manager.CouponParam;
import com.medusa.gruul.discount.api.model.vo.manager.CouponSimpleVo;
import com.medusa.gruul.discount.api.model.vo.manager.CouponVo;
import com.medusa.gruul.discount.api.model.vo.manager.RecycleCouponVo;

import java.util.List;

/**
 * <p>
 * 优惠劵 服务类
 * </p>
 *
 * @author lcysike
 * @since 2019-12-09
 */
public interface ICouponService extends IService<Coupon> {

    /**
     * 查询列表
     *
     * @param couponParam
     * @return 分页对象
     */
    IPage<CouponVo> getCouponList(CouponParam couponParam);

    /**
     * 回收券列表
     * @return
     */
    List<RecycleCouponVo> getRecycleList();


    /**
     * 积分优惠劵查询列表
     *
     * @param couponParam
     * @return 分页对象
     */
    IPage<CouponVo> getIntegralCouponList(CouponParam couponParam);

    /**
     * 查询单张优惠劵信息
     *
     * @param id
     * @return CouponSimpleVo
     */
    CouponSimpleVo getSimpleCoupon(Long id);

    /**
     * 赠送优惠劵
     *
     * @param couponDtos
     * @param ids
     */
    void giveCoupon(List<CouponDto> couponDtos, String[] ids);

    /**
     * 优惠劵新增
     *
     * @param couponDto
     */
    void addCoupon(CouponDto couponDto);

    /**
     * 优惠劵修改
     *
     * @param couponDto
     */
    void updateCoupon(CouponDto couponDto);

    /**
     * 关闭/启用优惠劵
     *
     * @param ids
     * @param status
     */
    void changeCouponStatus(Long[] ids, Integer status);

    /**
     * 优惠劵删除
     *
     * @param ids
     */
    void deleteCouponList(Long[] ids);

    /**
     * 定时任务查询可未开始与进行中的优惠劵活动
     *
     * @return List<CouponVo>
     */
    List<CouponVo> findCouponListForTask();

    /**
     * 定时任务查更新优惠劵活动状态
     *
     * @param couponVo
     */
    void updateCouponForTask(CouponVo couponVo);

}
